#!/bin/bash

# HAP 包体积优化清理脚本
# 用于清理不需要打包到 HAP 的文件，减少包体积

set -e

echo "🧹 开始清理不需要的文件..."

APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$APP_DIR"

# 记录初始大小
INITIAL_SIZE=$(du -sh . 2>/dev/null | cut -f1)
echo "📊 初始目录大小: $INITIAL_SIZE"

# 1. 删除 node_modules（最大问题 - 635MB+）
if [ -d "node_modules" ]; then
    NODE_MODULES_SIZE=$(du -sh node_modules 2>/dev/null | cut -f1)
    echo "🗑️  删除 node_modules ($NODE_MODULES_SIZE)..."
    rm -rf node_modules
    echo "   ✅ node_modules 已删除"
else
    echo "   ℹ️  node_modules 不存在，跳过"
fi

# 2. 删除 package-lock.json（运行时不需要）
if [ -f "package-lock.json" ]; then
    echo "🗑️  删除 package-lock.json..."
    rm -f package-lock.json
    echo "   ✅ package-lock.json 已删除"
fi

# 3. 删除开发缓存
CACHE_DIRS=(".cache" ".parcel-cache" ".npm" ".yarn")
for dir in "${CACHE_DIRS[@]}"; do
    if [ -d "$dir" ]; then
        echo "🗑️  删除 $dir..."
        rm -rf "$dir"
        echo "   ✅ $dir 已删除"
    fi
done

# 4. 删除测试文件
if [ -d "test" ]; then
    echo "🗑️  删除 test 目录..."
    rm -rf test
    echo "   ✅ test 目录已删除"
fi

# 5. 删除开发配置文件（可选）
DEV_CONFIGS=("postcss.config.js" "tailwind.config.js" ".eslintrc" ".prettierrc")
for config in "${DEV_CONFIGS[@]}"; do
    if [ -f "$config" ]; then
        echo "🗑️  删除 $config..."
        rm -f "$config"
        echo "   ✅ $config 已删除"
    fi
done

# 6. 删除文档文件（可选，根据需要保留）
DOCS=("README.md" "CONTRIBUTING.md" "CHANGELOG.md" "SECURITY.md")
for doc in "${DOCS[@]}"; do
    if [ -f "$doc" ]; then
        echo "🗑️  删除 $doc..."
        rm -f "$doc"
        echo "   ✅ $doc 已删除"
    fi
done

# 7. 删除源代码目录（如果存在，已编译到 dist）
if [ -d "src" ]; then
    SRC_SIZE=$(du -sh src 2>/dev/null | cut -f1)
    echo "🗑️  删除 src 目录 ($SRC_SIZE)..."
    rm -rf src
    echo "   ✅ src 目录已删除"
fi

# 8. 删除其他平台特定的文件（鸿蒙平台不需要）
PLATFORM_SPECIFIC=(
    "icons/icon.icns"           # macOS 图标
    "icons/icon256.ico"         # Windows 图标
    "icons/windows-installer.gif"
    "icons/source"              # 图标源文件
    "resources/postinst_script" # Linux 安装脚本
    "resources/prerm_script"   # Linux 卸载脚本
)

for item in "${PLATFORM_SPECIFIC[@]}"; do
    if [ -e "$item" ]; then
        echo "🗑️  删除平台特定文件: $item..."
        rm -rf "$item"
        echo "   ✅ $item 已删除"
    fi
done

# 9. 删除构建脚本（运行时不需要）
if [ -d "scripts" ]; then
    # 保留必要的构建脚本，删除其他
    echo "🗑️  清理 scripts 目录..."
    # 保留 buildLocalization.js（运行时可能需要）
    find scripts -type f ! -name "buildLocalization.js" -delete 2>/dev/null || true
    echo "   ✅ scripts 目录已清理"
fi

# 10. 删除未使用的扩展文件（可选优化）
# 如果某些扩展功能在鸿蒙平台上不使用，可以删除
# 例如：macHandoff.js（macOS 特有功能）
if [ -f "js/macHandoff.js" ]; then
    echo "🗑️  删除 macOS 特有文件: js/macHandoff.js..."
    rm -f js/macHandoff.js
    echo "   ✅ js/macHandoff.js 已删除"
fi

# 11. 删除未使用的语言文件（如果只需要中文和英文）
# 注意：这需要根据实际需求调整
LOCALIZATION_DIR="localization/languages"
if [ -d "$LOCALIZATION_DIR" ]; then
    echo "🗑️  清理未使用的语言文件..."
    # 保留中文和英文
    cd "$LOCALIZATION_DIR"
    for lang_file in *.json; do
        if [ -f "$lang_file" ]; then
            lang_code=$(basename "$lang_file" .json)
            # 只保留 zh-CN, zh-TW, en-US
            if [[ ! "$lang_code" =~ ^(zh-CN|zh-TW|en-US)$ ]]; then
                echo "   删除: $lang_file"
                rm -f "$lang_file"
            fi
        fi
    done
    cd "$APP_DIR"
    echo "   ✅ 语言文件已清理（仅保留中文和英文）"
fi

# 记录最终大小
FINAL_SIZE=$(du -sh . 2>/dev/null | cut -f1)
echo ""
echo "📊 清理完成！"
echo "   初始大小: $INITIAL_SIZE"
echo "   最终大小: $FINAL_SIZE"
echo ""
echo "✅ 清理完成！可以开始构建 HAP 包了。"
echo ""
echo "💡 提示："
echo "   - 如果需要恢复开发环境，运行: npm install"
echo "   - 构建 HAP: cd ../../../../.. && hvigorw assembleHap"

